A computer network, in general, allows two or more devices interconnected by communication links and subnetworks to exchange information and/or share resources. The devices may serve as endpoint devices where data is typically originated or terminated in the computer network, or serve as intermediate devices where data is typically routed to other devices (e.g., other intermediate devices, endpoint devices, etc.) and/or subnetworks in the computer network. Examples of intermediate devices include routers, bridges and switches that interconnect communication links and subnetworks, whereas an endpoint device may be a computer located on one of the subnetworks.
Devices in the computer network (e.g., end station, intermediate stations, etc.), in general, communicate by exchanging discrete packets or frames of data according to predefined protocols. In this context, a protocol represents a set of rules defining how the stations interact with each other to transfer data. The traffic flowing into a network device—e.g., a router, switch, bridge, server, and the like—is generally made up of multiple abstraction layers (e.g., the Open Systems Interconnection (OSI) model). Each of these logical layers generally relates to communications functions of a similar nature. Generally, each layer is responsible for providing some service to the layer above it, and similarly each layer may use services of the layer below it.
The International Standards Organization (ISO) defined seven layers as a standard for computer networks in creating the OSI model. The layers are defined as follows: (1) the physical layer, (2) the data link layer, (3) the network layer, (4) the transport layer, (5) the session layer, (6) the presentation layer, and (7) the application layer. Generally, the physical layer is responsible for transmitting unstructured bits of information across a link. The data link layer generally provides error-free transfer of data frames over the physical layer, allowing layers above it to assume virtually error-free transmission over the link. The network layer is responsible for ensuring that any pair of systems in the network can communicate with each other, while the transport layer establishes a reliable communications stream between a pair of systems. The session layer generally facilitates the establishment of sessions between processes running on different sessions, by providing functionality for session establishment, maintenance and termination, as well as session support functionality such as security, name recognition services, and so on. Additionally, the presentation layer is responsible for the delivery and formatting of application layer information, while the application layer is responsible with the transfer and manipulating application data (e.g., transferring files, mail services, and so on).